package com.youlai.boot.modules.game.model.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.youlai.boot.modules.game.model.entity.GameCategory;
import com.youlai.boot.modules.game.model.entity.GameScreenshot;
import com.youlai.boot.modules.game.model.entity.GameTag;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 游戏信息VO
 *
 * @author 有来技术团队
 */
@Data
public class GameInfoVO {

    /**
     * 游戏ID
     */
    private Long id;

    /**
     * 游戏名称
     */
    private String name;

    /**
     * 游戏描述
     */
    private String description;

    /**
     * 封面图片
     */
    private String coverImage;

    /**
     * Banner图片
     */
    private String bannerImage;
    
    /**
     * 游戏分类ID
     */
    private String category;
    
    /**
     * 游戏分类信息
     */
    private GameCategory categoryInfo;
    
    /**
     * 游戏标签列表
     */
    private List<GameTag> tags;

    /**
     * 游戏开发商
     */
    private String developer;

    /**
     * 游戏发行商
     */
    private String publisher;

    /**
     * 发布日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate releaseDate;

    /**
     * 游戏价格
     */
    private BigDecimal price;

    /**
     * 折扣价格
     */
    private BigDecimal discountPrice;

    /**
     * 折扣开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime discountStart;

    /**
     * 折扣结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime discountEnd;

    /**
     * 评分(1-5)
     */
    private BigDecimal rating;

    /**
     * 评分人数
     */
    private Integer ratingCount;

    /**
     * 下载次数
     */
    private Integer downloadCount;

    /**
     * 游戏大小(MB)
     */
    private String size;

    /**
     * 游戏版本
     */
    private String version;

    /**
     * 最低年龄要求
     */
    private Integer minAge;
    
    /**
     * 游戏状态(0-下架，1-上架)
     */
    private Integer status;

    /**
     * 是否推荐(0-否，1-是)
     */
    private Integer featured;

    /**
     * 是否热门(0-否，1-是)
     */
    private Integer hot;

    /**
     * 是否新品(0-否，1-是)
     */
    private Integer newGame;
    
    /**
     * 游戏截图列表
     */
    private List<GameScreenshot> screenshots;
    
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
} 